Subqueries এবং Nested Queries হল দুটি SQL কৌশল যা একাধিক কুয়েরি একসাথে চালানোর জন্য ব্যবহৃত হয়। এরা মূল কুয়েরির মধ্যে আরেকটি কুয়েরি (একটি সাবকুয়েরি) ব্যবহার করে এবং এর মাধ্যমে আরো জটিল ডাটাবেস অপারেশন সম্পাদন করা সম্ভব হয়। SQLite এবং অন্যান্য SQL ডাটাবেস সিস্টেমে এগুলোর ব্যবহার অনেক গুরুত্বপূর্ণ।
Subqueries (সাবকুয়েরি)
Subquery বা সাবকুয়েরি হল একটি কুয়েরি যা অন্য কুয়েরির মধ্যে লেখা থাকে। এটি একটি প্রধান কুয়েরির (Main Query) অংশ হিসেবে কাজ করে এবং প্রধান কুয়েরি একটি সাবকুয়েরির ফলাফলের উপর ভিত্তি করে ডাটা নির্বাচন বা অন্য অপারেশন করতে পারে।
সাবকুয়েরি সাধারণত একটি SELECT, INSERT, UPDATE, অথবা DELETE কুয়েরির মধ্যে ব্যবহৃত হয় এবং এটি যে কুয়েরির মধ্যে রয়েছে সেই কুয়েরির ফলাফল হিসেবে ব্যবহৃত হয়।
Subquery এর সাধারণ সিনট্যাক্স:
SELECT column1, column2
FROM table_name
WHERE column1 IN (SELECT column_name FROM another_table WHERE condition);
উদাহরণ:
ধরা যাক, আমাদের একটি employees টেবিল আছে এবং সেখানে সকল কর্মচারীর তথ্য রয়েছে। আমরা জানি যে department_id ২ এর কর্মচারীদের সমস্ত নাম দেখতে চাই।
SELECT name
FROM employees
WHERE department_id IN (SELECT id FROM departments WHERE name = 'Sales');
এখানে:
- প্রধান কুয়েরি
employeesটেবিল থেকে নাম নির্বাচন করছে যেখানেdepartment_idসাবকুয়েরির ফলাফলের মধ্যে রয়েছে। - সাবকুয়েরি
departmentsটেবিল থেকে সেই বিভাগেরidনির্বাচন করছে যার নাম 'Sales'।
Nested Queries (নেস্টেড কুয়েরি)
Nested Query (নেস্টেড কুয়েরি) হল একটি কুয়েরি যা অন্য কুয়েরির মধ্যে লেখা থাকে, কিন্তু নেস্টেড কুয়েরি সবসময় সাবকুয়েরির মতো কাজ করে না। যদিও অনেক ক্ষেত্রে সাবকুয়েরি এবং নেস্টেড কুয়েরি একে অপরের সমার্থক, তবে নেস্টেড কুয়েরি সাধারণত কোনও আউটপুটের মধ্যে একটি কুয়েরি ব্যবহার করার মাধ্যমে কাজ করে।
সাধারণত, নেস্টেড কুয়েরি মানে একটি কুয়েরি যা অন্য কুয়েরির ভেতরে থাকে, যাকে একটি আউটপুট বা ফলাফল হিসেবে ব্যবহার করা হয়। একটি কুয়েরির মধ্যে অনেকগুলো সাবকুয়েরি থাকতে পারে, যা একে অন্যের সাথে সম্পর্কিত বা সম্পর্কহীন হতে পারে।
Nested Query এর সাধারণ সিনট্যাক্স:
SELECT column1
FROM table_name
WHERE column1 = (SELECT column_name FROM another_table WHERE condition);
উদাহরণ:
ধরা যাক, আমাদের দুটি টেবিল আছে — employees এবং departments। আমরা employees টেবিল থেকে তাদের নাম দেখতে চাই যাদের salary বেশি, তবে তাদের department_id IT বিভাগের সাথে সম্পর্কিত।
SELECT name
FROM employees
WHERE department_id = (SELECT id FROM departments WHERE name = 'IT') AND salary > 50000;
এখানে:
- প্রধান কুয়েরি
employeesটেবিল থেকে কর্মচারীদের নাম নির্বাচন করছে, যেখানেsalary৫০,০০০ এর বেশি এবং তাদেরdepartment_idসাবকুয়েরির ফলাফলের সমান। - সাবকুয়েরি
departmentsটেবিল থেকে 'IT' বিভাগেরidনির্বাচন করছে।
Subqueries এবং Nested Queries এর মধ্যে পার্থক্য
- রূপ এবং ব্যবহার:
- Subquery সাধারণত
IN,EXISTS,ANY, বাALLএর সাথে ব্যবহৃত হয় এবং একটি কুয়েরির ফলাফল হিসেবে ব্যবহৃত হয়। - Nested Query যেকোনো SQL কুয়েরির মধ্যে থাকতে পারে এবং সাধারণত
WHEREক্লজের মধ্যে ব্যবহৃত হয়।
- Subquery সাধারণত
- ফলাফল:
- Subquery সাধারণত একাধিক ফলাফল বা একক মান প্রদান করতে পারে।
- Nested Query একটি নির্দিষ্ট আউটপুট প্রদান করতে পারে যা অন্য কুয়েরির আউটপুট হিসেবে কাজ করে।
সারাংশ
Subqueries এবং Nested Queries উভয়ই SQL কুয়েরির মধ্যে অন্য কুয়েরি ব্যবহার করার কৌশল, যা জটিল ডাটাবেস অপারেশন এবং ডাটা ফিল্টারিং সহজ করে। এগুলি একাধিক কুয়েরির মধ্যে সম্পর্ক তৈরি করতে এবং কার্যকরীভাবে ডাটা পরিচালনা করতে সহায়তা করে।
Read more